package mybatis.interfaces;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * 使用 and 连接的 <= 操作
 *
 * @author CKC
 */
public interface ILessThanOrEqualsQueryCondition extends Serializable {

    /**
     * 小于等于,仅支持不同字段and连接，eg: lte[age]=20 表示 age <= 20
     * <p>
     * 备注：为了与SwaggerUI结合，产生Swagger文档
     *
     * @return
     */
    @ApiModelProperty(name = "lte[?]", value = "小于等于,仅支持不同字段and连接，eg: lte[age]=20 表示 age <= 20 ")
    @JsonIgnore
    default String getLteSwaggerView() {
        return null;
    }

    /**
     * getLte
     *
     * @return
     * @see #getLteSwaggerView
     */
    Map<String, String> getLte();

    /**
     * setLte
     *
     * @param lte
     * @see #getLteSwaggerView
     */
    void setLte(Map<String, String> lte);

    /**
     * addLte
     *
     * @param field
     * @param value
     * @see #getLteSwaggerView
     */
    default void addLte(String field, String value) {
        if (getLte() == null) {
            setLte(new HashMap<>(8));
        }
        getLte().put(field, value);
    }

    /**
     * setLte(null)
     *
     * @see #getLteSwaggerView
     */
    default void clearLte() {
        setLte(null);
    }

    /**
     * isEmptyLte
     *
     * @return
     */
    @ApiModelProperty(hidden = true)
    @JsonIgnore
    default boolean isEmptyLte() {
        return getLte() == null || getLte().isEmpty();
    }
}
